<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <h1>数据代理</h1>
    <script>
      let number = 17;
      const obj = {
        name: "张三",
        sex: "男",
      };
      // 参数1： 需要添加属性的对象  参数2：添加属性的名称  参数3：属性的配置
      Object.defineProperty(obj, "age", {
        //  通过这个方法可以在对象上添加属性  这种方式更灵活
        // value: 18,
        // enumerable: true,   // 是否可以枚举  默认值为false
        // writable: true,     //是否可以修改，默认值为false
        // configurable: true,  //是否可以删除 默认值为false
        get: function () {
          // get 方法  当age 被访问是会触发get 方法
          console.log("age被访问");
          return number;
        },
        set: function (value) {
          // age被修改的时候会触发set 方法  接收一个参数 value值 value就是修改的值
          console.log("age被修改");
          number = value;
        },
      });

      console.log(obj);
    </script>
  </body>
</html>
